/* -*-jde-*- */
/* <Edge.java> */
package Practica7.util;

/**
 * Modelo para la representación de las aristas.
 *
 * @author	Carrillo Espinosa Ernesto
 * @author	Peralta Santa anna Victor Miguel
 * @since	Julio 2011
 */
public class Edge<E> {

    /** 
     * Vértice origen.
     */
    private Vertex<E> source;
    /** 
     * Vértice destino.
     */
    private Vertex<E> target;
    /** 
     * Peso.
     */
    private int weight;
    /** 
     * Índice.
     */
    private int index;

    /**
     * Crea un ejemplar de la clase con el vértice origen <i>s</i> y vértice destino <i>t</i>.
     * El peso será <i>DEFAULT_WEIGHT</i> y el índice <i>NULL_INDEX</i>.
     * @param s vértice orgigen.
     * @param t vértice destino.
     */
    public Edge(Vertex<E> s, Vertex<E> t) {
        this(s, t, Graph.DEFAULT_WEIGHT, Graph.NULL_INDEX);
    }

    /**
     * Crea un ejemplar de la clase con el vértice origen <i>s</i>, vértice destino <i>t</i>,
     * peso w e índice idx.
     * @param s vértice orgigen.
     * @param t vértice destino.
     * @param w peso.
     * @param idx índice.
     */
    public Edge(Vertex<E> s, Vertex<E> t, int w, int idx) {
        source = s;
        target = t;
        weight = w;
        index = idx;
    }

    public Vertex<E> getSource() {
        return source;
    }

    public void setSource(Vertex<E> source) {
        this.source = source;
    }

    public Vertex<E> getTarget() {
        return target;
    }

    public void setTarget(Vertex<E> target) {
        this.target = target;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int w) {
        weight = w;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    /**
     * Regresa la representación de la arista con todas sus cualidades.
     * @return La representación de un ejemplar de la clase en cadena.
     */
    @Override
    public String toString() {
        return " < i:( " + index + " ) w:( " + weight + " ) s:( " + source.toString()
                + " ) t:( " + target.toString() + " ) > ";
    }
}
